package com.smart.platform.controller;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.smart.platform.common.Result;
import com.smart.platform.entity.TeaClasses;
import com.smart.platform.service.TeaClassesService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

@Slf4j
@RestController
@RequestMapping("/TeaClasses")
@Api(tags = "教师班级接口")
public class TeaClassesController {
    @Autowired
    private TeaClassesService teaClassesService;

    /**
     * 新增班级 需要grade和classes
     *
     * @param teaClasses
     * @return
     */
    @ApiOperation(value = "教师添加管理年级和班级接口", notes = "需要传递当前教师所需管理的年级grade和班级classes")
    @PostMapping("/save")
    public Result<String> save(HttpServletRequest request, @RequestBody TeaClasses teaClasses) {
        log.info("新增班级：{}", teaClasses.toString());
        // 获取当前登录用户的userId
        String userId = (String) request.getSession().getAttribute("userId");
        // 设置班级的数据Id
        teaClasses.setUserId(userId);
        // 保存班级信息
        teaClassesService.save(teaClasses);

        // 返回添加成功的结果
        return Result.success("管理班级添加成功");
    }


    /**
     * 根据id删除管理班级
     *
     * @param
     * @return
     */
    @ApiOperation(value = "教师删除管理班级接口", notes = "只需要传递删除哪一个班级即可 工号通过session获取")
    @DeleteMapping
    public Result<String> delete(Long id) {
        log.info("删除班级：{}", id);

        //根据教师的工号和管理的班级作为删除条件进行删除

        teaClassesService.removeById(id);

        return Result.success("分类信息删除成功");
    }

    /**
     * 通过session获取当前登录教师的工号 查询该教师所管理班级
     *
     * @param request
     * @return
     */
    @ApiOperation(value = "查询教师管理班级接口", notes = "工号通过session获取 不需要传递任何数据")
    @GetMapping
    public Result<List<TeaClasses>> list(HttpServletRequest request) {
        // 获取用户ID
        String userId = (String) request.getSession().getAttribute("userId");

        // 创建LambdaQueryWrapper对象，用于构建查询条件
        LambdaQueryWrapper<TeaClasses> queryWrapper = new LambdaQueryWrapper<>();
        // 查询TeaClasses表中userId等于用户ID的记录
        queryWrapper.eq(TeaClasses::getUserId, userId);

        // 查询满足条件的记录
        List<TeaClasses> list = teaClassesService.list(queryWrapper);

        // 返回查询结果
        return Result.success(list);

    }

    /**
     * 更新管理班级接口
     *
     * @param teaClasses
     * @return
     */
    @ApiOperation(value = "教师修改管理班级接口", notes = "需要传递对应元组的id用于修改条件和修改后的班级数据")
    @PutMapping("/update")
    public Result<String> update(@RequestBody TeaClasses teaClasses) {
        log.info("需改的班级：{}", teaClasses.getClasses());

        //因为教师课程表里面userid是可重复的因此只能根据唯一的主键来修改值
        //根据当前登录教师的id进行更新（唯一字段）
        teaClassesService.updateById(teaClasses);

        return Result.success("班级修改成功");
    }
}
